package controlador;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import entidades.Generico;
import entidades.Proveedor;
import entidades.iOperaciones;

public class CdGenerico implements iOperaciones{
	Generico EGenerico = new Generico();

	CsConexion con = CsConexion.getConnection();

	@Override
	public boolean agregar(Object nuevo) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException, SQLException {
		// TODO Auto-generated method stub
		EGenerico=(Generico) nuevo;

		try
		{  
		con.consultasql="insert into generico(codigoGene,nombre,existencias,preciof,formula) values('"+EGenerico.getCodigo()+"','"+EGenerico.getNombre()+"','"+EGenerico.getExistencia()+"','"+EGenerico.getPrecio()+"','"+EGenerico.getFormula()+"','"+EGenerico.getProveedor().getIdProveedor()+"')";
		//con.consultasql="insert into caja(numerocaja,descripcion) values ('"+ECaja.getnCaja()+"','"+ECaja.getDescripcion()+"')";
			con.instruccion.executeUpdate(con.consultasql);//ejecutar la consulta
			return true;
		}
		catch(Exception e)
		{
			System.out.println("error: " + e);
			return false;
		}
	}

	@Override
	public boolean actualizar(Object modificado) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException, SQLException {
		// TODO Auto-generated method stub
		EGenerico=(Generico) modificado;
		try
		{  
			con.consultasql="update generico set codigoGene='"+EGenerico.getCodigo()+"',nombre='"+EGenerico.getNombre()+"',existencias= '"+EGenerico.getExistencia()+"',preciof='"+EGenerico.getPrecio()+"',formula='"+EGenerico.getFormula()+"',idProveedor='"+EGenerico.getProveedor().getIdProveedor()+"' where codigoGene='"+EGenerico.getCodigo()+"'";
			con.instruccion.executeUpdate(con.consultasql);//ejecutar la consulta
			return true;
		}
		catch(Exception e)
		{
			System.out.println("error: " + e);
			return false;
		}
	}

	@Override
	public boolean eliminar(Object eliminado) throws ClassNotFoundException,
			InstantiationException, IllegalAccessException, SQLException {
		// TODO Auto-generated method stub
		EGenerico=(Generico) eliminado;
		try
		{  
			con.consultasql="delete from generico where generico. codigoGene='"+EGenerico.getCodigo()+"'LIMIT 1";
			con.instruccion.executeUpdate(con.consultasql);//ejecutar la consulta
			
			return true;
			
		}
		catch(Exception e)
		{
			System.out.println("error: " + e);
			return false;
		}
	}

	@Override
	public List<Object> listar() throws ClassNotFoundException,
			InstantiationException, IllegalAccessException, SQLException {
		// TODO Auto-generated method stub
		List<Object>lista= new ArrayList <Object>();
		try{
			con.consultasql="select p.codigoGene,p.nombre,p.existencias,p.preciof,p.formula,pro.idProveedor,pro.nombre as nomProveedor from generico as p join proveedor as pro on pro.idProveedor =pro.idProveedor";
			con.resultado=con.instruccion.executeQuery(con.consultasql);
			while(con.resultado.next()){
				Generico registro = new Generico();
				Proveedor proveedorreg= new Proveedor();
				registro.setCodigo(con.resultado.getString("codigoGene"));
				registro.setNombre(con.resultado.getString("nombre"));
				registro.setExistencia(con.resultado.getInt("existencias"));
				registro.setPrecio(con.resultado.getFloat("preciof"));
				registro.setFormula(con.resultado.getString("formula"));
				//registro.setPrecio(con.resultado.getInt("idProveedor"));
				
				proveedorreg.setIdProveedor(con.resultado.getInt("idProveedor"));
				proveedorreg.setNombre(con.resultado.getString("nomProveedor"));
				registro.setProveedor(proveedorreg);
				
				lista.add(registro);
			}
		}
		catch(Exception e)
		{
			System.out.println("error: " + e);
		}
		return lista;
	}

}

